package com.zomiot.portal.auth.constant;

/**
 * 用户权限枚举
 *
 * 权限说明：
 * - GUEST：游客权限，仅可访问公开页面
 * - MEMBER：会员权限，可访问会员专区
 * - EDITOR：编辑权限，可管理内容（发布文章、管理产品等）
 * - ADMIN：管理员权限，可管理系统（用户管理、权限配置等）
 *
 * @author Joash_Yi
 */
public enum UserPermission {

    /**
     * 游客权限 - 仅可访问公开页面
     * 适用场景：未登录用户、被禁用用户
     */
    GUEST,

    /**
     * 会员权限 - 可访问会员专区
     * 适用场景：普通注册用户
     * 权限包含：GUEST + 会员专区内容
     */
    MEMBER,

    /**
     * 编辑权限 - 可管理内容
     * 适用场景：内容管理员、运营人员
     * 权限包含：GUEST + MEMBER + 内容管理功能
     */
    EDITOR,

    /**
     * 管理员权限 - 可管理系统
     * 适用场景：系统管理员
     * 权限包含：GUEST + MEMBER + EDITOR + 系统管理功能
     */
    ADMIN;

    /**
     * 判断是否有指定权限
     *
     * @param permission 要检查的权限
     * @return 是否拥有该权限
     */
    public boolean hasPermission(UserPermission permission) {
        // 权限等级：ADMIN > EDITOR > MEMBER > GUEST
        return this.ordinal() >= permission.ordinal();
    }
}